# -!- coding: utf-8 -!-
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
海拍客流程图
#文件：flow_hpk.py
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

import random
from pycacho.cachobase.deal_time import cur_date_fixed,next_date_fixed


pro_type= random.choice(['随心借','分期还'])              # 产品类型：1-随心借、2-分期还
credit_status = random.choice(['999','0','1','2','3','4','5','6'])     # 授信状态：999-不符合准入规则，0-未授信，1-授信审批中，2-授信失效，3-已授信有额度，4-授信被拒-禁入，5-授信被拒-封闭期内，6-授信被拒-封闭期外
apply_point = random.choice([0,1,4,9])           # 授信节点：9-支付密码，4-活体检测，1-企业信息认证
apply_status = random.choice(['S','F','P'])      # 审批结果：S-成功，F-失败，P-处理中
loan_status = random.choice([0,1,4,6,7])         # 借款状态：0-无授信记录，1-待付款，4-还款中，6-逾期，7-已结清
amount = random.choice([10000,20000,30000])      # 授信金额：支持输入10,000的整倍数
loan_amount = random.choice([999,3000,20000])    # 借款金额：>=1000
single_amount = random.choice([1000,5000,10000]) # 单门店可用额度：>=loan_amount
total_amount = random.choice([1000,5000,10000])  # 多门店最大共享额度：>=loan_amount
pay_apply_status = random.choice(['S','F','P'])  # 用信结果：S-成功，F-失败，P-处理中
pay_status = random.choice([0,1,2,3])            # 放款状态：0-待放款，1-放款中，2-放款成功，3-放款失败（如何处理）
refund_amount = random.choice([1000,5000,10000]) # 退货金额>=loan_amount
d_rate = 0.0005                                  # 随心借：按日计息  0.18
t_rate = 0.18                                    # 分期还：年化利率
loan_date = '2019-12-20'                         # 放款日期


def flow_income(op):
    if op == 'apply':
        print('海拍客内部系统配置的白名单客户、并且客户未在其他资金方授信成功')
        print('客户在海拍客app页面点击“申请”按钮，跳转至额度申请前的落地引导页面，输入额度后点击“马上申请...”')
        if amount>20000:
            print('弹窗提示“您申请的授信额度超过20,000元，需要授权查询您的人行征信报告，请知悉并协助进行相关授权及确认。感谢您的理解和支持！”')
            print('用户点击【确认并继续】，后续需要授权查询人行征信报告！')
        else:
            print('用户申请金额10,000或者自动填写申请金额20,000')
        print('调用授信申请接口credit/v1/apply，小贷受理后创建一个授信流水号并关联客户商编号merchantNo！')
        print('同时异步调用小贷补充信息接口上送对应商户merchantNo的交易相关统计信息！')
        if credit_status == '999':
            print('该商户不符合准入条件：商户平台注册时长（天）≥720；近6月每月均有进货；近6月每月均订单数≥5；近6月每月均订单金额≥10万')
            exit()
        print('根据商户merchantNo的节点状态跳转到对应页面：')
    elif op == 'loan':
        print('客户在海拍客app页面点击“付款”按钮，带参数商户编号、借款金额，然后判断是否跳转到小贷h5订单支付页面：')
        if loan_amount < 1000:
            print('无法进入到小贷h5订单支付页面，直接提示客户“待支付订单金额不能小于1000”')
        else:
            print('跳转到小贷h5订单支付页面，并进行后续流程...”')
    elif op == 'account':
        print('客户在海拍客app页面点击“我的账户”按钮，带参数：商户编号、借款金额，然后判断是否跳转到小贷h5订单支付页面：')
        if loan_amount < 1000:
            print('无法进入到小贷h5订单支付页面，直接提示客户“待支付订单金额不能小于1000”')
        else:
            print('跳转到小贷h5订单支付页面，并进行后续流程...”')

def flow_apply():
    flow_income('apply')                       # 操作类型：apply-申请，pay-付款，account-我的账户
    if apply_point == 0 :
        print('客户该商户未完成企业信息认证，跳转到企业信息认证页面....')
    elif apply_point == 1:
        print('客户该商户已经完成了企业信息认证，跳转到法人信息认证页面....')
    elif apply_point == 4:
        print('客户该商户已经完成了活体检测节点，跳转到银行卡认证页面....')
    else:
        print('客户该商户已经完成了支付密码设置节点，直接跳转到我的账户页面，展示授信额度....')
        exit()
    flow_authorize(apply_point)
    print('客户在海拍客app端调用授信状态查询接口credit/v1/query，查看商户或者某个授信流水号的授信状态...')

def flow_authorize(apply_point):
    flow = [
        "客户开始进行企业信息认证：营业执照信息（OCR直扫识别）和食品经营许可证信息（OCR直扫识别），返显信息可以进行修改并确认....",
        "客户开始进行法人信息认证：身份证信息（OCR直扫识别）和申请人其他信息，返显信息可以进行修改并确认....",
        "客户开始法人信息认证确认后会调用第三方征信三要素认证接口进行身份核验，法人信息认证成功后（身份证校验通过、与企业法人姓名一致），需要根据身份证判断申请人额度状态：",
        "客户调用第三方服务进行活体检测，认证通过后进入到下一步...",
        "输入银行卡、预留手机号并获取验证码后调用第三方服务商的四要素认证，对银行卡进行认证并完成代扣绑卡...",
        "绑卡成功后，进行添加联系人操作...",
        "联系人添加完成后，设置交易密码，然后调用规则引擎规则..."
    ]
    for i in range(apply_point,len(flow)):
        print(flow[i])
        if i == 2:
            if credit_status == '0':
                print('该客户未授信过，可以开始进行授信申请流程....')
            elif credit_status == '1':
                print('弹窗提示“当前已有一笔申请在审批中，请稍后尝试申请”')
                exit()
            elif credit_status == '2':
                print('该客户有授信申请记录、但申请通过时间超过三个月额度已失效，按照新用户的流程进行授信申请！')
            elif credit_status == '3':
                print('该客户有授信申请记录、且申请通过时间不超过三个月额度未失效，提示客户是否复用前申请时的个人信息进行申请，复用信息流程继续....')
            elif credit_status == '4':
                print('客户所有申请均拒绝，提示“申请暂不受理，感谢您的支持。”')
                exit()
            elif credit_status == '5':
                print('客户被拒绝申请在封闭期内，提示“申请暂不受理，请在XX天后再试”')
                exit()
            elif credit_status == '6':
                print('客户被拒绝申请已过封闭期，可以按照正常流程进行后续操作！')
    flow_rule()

def flow_rule():
    print('传入授信申请数据进入到规则引擎，调用第三方征信并跑规则流程...')
    print('跳转到授信结果页面，并根据具体授信状态展示授信结果：')
    if apply_status == 'P':
        print('审批中提示：审核处理中....')
    elif apply_status == 'S':
        print('决策引擎输出结果为通过，')
        print('审批通过提示：恭喜！审批已通过。额度50,000元已生效，您可以用来支付平台订货的订单。')
        print('通过审批的客户，小贷在数据库中创建额度账户（额度有效期？）')
        print('调用通知接口将授信通过信息（creditNo-授信流水号、merchantNo-商编号）反馈给合作方...')
        print('同时将授信成功的信息发送到授信申请的手机号')
    elif apply_status == 'F':
        print('审批拒绝提示：因综合评分原因本次申请未通过，您可以在XX天（封闭期？）后再次尝试申请，感谢您的支持！')
        print('调用通知接口将授信拒绝信息（creditNo-授信流水号、merchantNo-商编号）反馈给合作方...')

def flow_loan():
    flow_income('loan')            # 操作类型：apply-申请，loan-付款，account-我的账户
    if loan_status == 6:
        print('客户有逾期订单，提示：【额度使用受限】尊敬的客户，您当前账户存在逾期欠款未还，请及时还清欠款；')
    elif loan_status == 0:
        print('该客户无有效授信信息，无法进行借款，请先进行授信申请...')
    else:
        if loan_amount > single_amount:
            print('待支付订单金额＞门店可用余额，提示：【额度使用受限】尊敬的客户，您当前账户额度不足以支付当前订单，建议更换支付方式')
        else:
            if loan_amount > total_amount:
                print('待支付订单金额＞跨店可用余额，提示：【额度使用受限】尊敬的客户，您当前“跨店”可用额度不足以支付当前订单，建议更换支付方式')
            else:
                print('客户点击“额度查询”按钮后，显示单个门店可用额度和多个门店共享可用额度少的金额为：', min(single_amount,total_amount))
                print('客户选择一个产品：', pro_type, '，显示对应产品的到期还款金额、最后还款日、还款计划等信息')
                print('客户勾选阅读并同意《借款协议》，并点击“确认付款”按钮，然后输入支付密码验证正确后，传借款信息到后台进行审批和处理：')
                print('客户如果忘记支付密码，可以在输入密码界面点击“忘记密码”，跳转到我的账户-“密码管理”页面进行密码重置...')
                print('跳转至支付结果页面，调用接口贷款查询credit/v1/pay/query显示支付结果：')
                if pay_apply_status == 'P':
                    print('审批中提示：业务处理中...')
                elif pay_apply_status == 'S':
                    print('审批通过提示：付款成功，请留意订单支付状态的变化，感谢您使用！')
                    print('通过审批的客户，小贷在数据库中创建支付记录（实际是T+3日向海拍客批量结算T日（用信日）的扣除退货交易的借款人用信的借款本金。）、借款记录、还款计划，并冻结该笔借款额度')
                    print('调用用信结果通知接口将用信通过信息（loanNo-借款流水号、merchantNo-商编号）反馈给合作方...')
                    print('同时将支付成功的信息发送到授信申请的手机号')
                    print('运营人员登陆到后台管理系统，生成并下载T-3日前用信审批通过的“日放款交易文件”，然后提交财务打款；放款状态由0-待放款变成1-放款中的状态，不支持退货交易...')
                    print('财务打款完成，运营上传“放款上传文件”，放款成功的交易状态变成2-放款成功，支持退货交易...')
                    print('财务打款完成，运营上传“放款上传文件”，放款失败的交易状态变成3-放款失败，支持退货交易...')
                elif pay_apply_status == 'F':
                    print('审批拒绝提示：付款失败，您当前额度账户使用受限；')
                    print('调用用信结果通知接口将用信拒绝信息（loanNo-借款流水号、merchantNo-商编号）反馈给合作方...')
                

# 退货流程
def flow_refund():
    penaltyFee = loan_amount
    print('客户发起订单的退货请求,调用退货申请接口refund/v1/apply，然后判断是否支持退货：')
    if pay_status == 1 or pay_status == 3:
        print('该笔贷款暂时不支持退货，原因：贷款不是待付款或者放款成功状态，或者退货金额不足以支付罚息+利息')
    else:
        print('支持退货，不额外收取退货手续费，并按照退货流程进行退货处理：')
        if pro_type == '随心借':
            print('退货金额按照罚息（如有）、费用（如有）、利息和本金的顺序进行扣减，扣减后计算剩余应付本金和利息；')
            print('罚息为：',penaltyFee,)


# 主动还款
def flow_repay():
    print('客户从海拍客跳转到：')


# 自动任务批扣：每月15日
def flow_repay_batch():
    print('每天小贷后台根据还款计划，先将逾期客户查询出来，然后按照下面流程对逾期期数生成批扣文件')
    print('每月15日小贷后台根据还款计划，然后按照下面流程对逾期期数生成批扣文件')
    print('先判断当前客户应还款额是否超过扣款渠道限制（50000），超过人工干预，如果没有超过自动任务系统cronjob在当天下午20:00时和晚上22:00两个批次自动生成批量扣款文件，并从客户绑定银行卡进行扣款还款：')
    if pro_type == '随心借':
        print('每月1日生成的上个月所有借款订单本金、利息汇总信息')
        print('15日根据当月1日生成的上个月所有借款订单本金、利息汇总，按照账单总金额去客户绑定银行卡代扣')
    elif pro_type == '分期还':
        print('获取当期需要还款的客户的信息，按照当期应还总金额去客户绑定银行卡代扣')


def count_refund(amount):
    print('test')


def day_batch():
    print('每日小贷后台根据还款计划，先将逾期客户查询出来，然后按照批扣流程进行生成批扣文件进行批扣')
    print('每日小贷自动任务筛选昨天用信申请通过的订单，生成6.1、日放款交易文件（每日）')
    print('每日小贷自动任务筛选昨天退货成功的订单，生成6.2、日退货交易文件（每日）')
    print('每日小贷自动任务筛选昨天逾期还款成功的订单，生成6.3、日逾期交易文件（每日）')   # 1期不做
    print('每日小贷自动任务筛选D+3天到期的扣款超额信息，生成6.4、扣款超额文件（每日）')    # 1期不做


def fixed_batch():
    print('每月1日针对随心借产品，筛选上个月所有借款订单，汇总生成还款本金和利息')



def main():
    #flow_apply()
    flow_loan()


if __name__ == '__main__':
    main()